home *** CD-ROM | disk | FTP | other *** search
/ AOL File Library: 2,801 to 2,900 / aol-file-protocol-4400-2801-to-2900.zip / AOLDLs / C++ Files Library / Think C QuickTime Interfaces / TC QuickTime.sit / TC QuickTime / QuickTimeComponents.h < prev    next >
Text File  |  1994-03-22  |  63KB  |  1,549 lines

  1. /************************************************************
  2.  
  3. Created: Tuesday, June 8, 1993 at 3:10 PM
  4.  QuickTimeComponents.h
  5.  C Interface to the Macintosh Libraries
  6.  
  7.  
  8.  Copyright Apple Computer, Inc. 1991, 1992
  9.  All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13.  
  14. #pragma once
  15.  
  16. #ifndef __QUICKTIMECOMPONENTS__
  17. #define __QUICKTIMECOMPONENTS__
  18.  
  19. #ifndef __COMPONENTS__
  20. #include <Components.h>
  21. #endif
  22.  
  23. #ifndef __IMAGECOMPRESSION__
  24. #include <ImageCompression.h>
  25. #endif
  26.  
  27. #ifndef __MOVIES__
  28. #include <Movies.h>
  29. #endif
  30.  
  31. #ifndef __QUICKDRAW__
  32. #include <QuickDraw.h>
  33. #endif
  34.  
  35. #ifndef __VIDEO__
  36. #include <Video.h>
  37. #endif
  38.  
  39.  
  40.     #define clockComponentType         'clok'
  41.     #define systemTickClock         'tick'            /* subtype: 60ths since boot        */
  42.     #define systemSecondClock        'seco'            /* subtype: seconds since 1904        */
  43.     #define systemMillisecondClock    'mill'            /* subtype: 1000ths since boot        */
  44.     #define systemMicrosecondClock    'micr'            /* subtype: 1000000ths since boot    */
  45.     
  46.     enum {
  47.         kClockRateIsLinear = 1,
  48.         kClockImplementsCallBacks = 2
  49.     };
  50.     
  51.     #define ClockGetTime GetClockTime
  52.  
  53.  
  54. #ifdef __cplusplus
  55. extern "C" {
  56. #endif /*__cplusplus*/
  57.  
  58. /** These are Clock procedures **/
  59.  
  60. pascal ComponentResult ClockGetTime (ComponentInstance aClock, TimeRecord *out)  = {0x2F3C,0x4,0x1,0x7000,0xA82A};
  61.  
  62. pascal QTCallBack ClockNewCallBack (ComponentInstance aClock, TimeBase tb, short callBackType)  = {0x2F3C,0x6,0x2,0x7000,0xA82A};
  63.  
  64. pascal ComponentResult ClockDisposeCallBack (ComponentInstance aClock, QTCallBack cb)  = {0x2F3C,0x4,0x3,0x7000,0xA82A};
  65.  
  66. pascal ComponentResult ClockCallMeWhen (ComponentInstance aClock, QTCallBack cb, long param1, long param2, long param3)  = {0x2F3C,0x10,0x4,0x7000,0xA82A};
  67.  
  68. pascal ComponentResult ClockCancelCallBack (ComponentInstance aClock, QTCallBack cb)  = {0x2F3C,0x4,0x5,0x7000,0xA82A};
  69.  
  70. pascal ComponentResult ClockRateChanged (ComponentInstance aClock, QTCallBack cb)  = {0x2F3C,0x4,0x6,0x7000,0xA82A};
  71.  
  72. pascal ComponentResult ClockTimeChanged (ComponentInstance aClock, QTCallBack cb)  = {0x2F3C,0x4,0x7,0x7000,0xA82A};
  73.  
  74. pascal ComponentResult ClockSetTimeBase (ComponentInstance aClock, TimeBase tb)  = {0x2F3C,0x4,0x8,0x7000,0xA82A};
  75.  
  76. pascal ComponentResult ClockStartStopChanged (ComponentInstance aClock, QTCallBack cb, Boolean startChanged, Boolean stopChanged)  = {0x2F3C,0x8,0x9,0x7000,0xA82A};
  77.  
  78. pascal ComponentResult ClockGetRate (ComponentInstance aClock, Fixed *rate)  = {0x2F3C,0x4,0xA,0x7000,0xA82A};
  79.  
  80. #ifdef __cplusplus
  81. }
  82. #endif /*__cplusplus*/
  83. enum {
  84.     kClockGetTimeSelect = 0x1,
  85.     kClockNewCallBackSelect = 0x2,
  86.     kClockDisposeCallBackSelect = 0x3,
  87.     kClockCallMeWhenSelect = 0x4,
  88.     kClockCancelCallBackSelect = 0x5,
  89.     kClockRateChangedSelect = 0x6,
  90.     kClockTimeChangedSelect = 0x7,
  91.     kClockSetTimeBaseSelect = 0x8,
  92.     kClockStartStopChangedSelect = 0x9,
  93.     kClockGetRateSelect = 0xA 
  94. };
  95.  
  96.     /*
  97.         General Sequence Grab stuff
  98.     */
  99.     
  100.     typedef ComponentInstance SeqGrabComponent;
  101.     
  102.     typedef ComponentInstance SGChannel;
  103.     
  104.     #define SeqGrabComponentType 'barg'
  105.     #define SeqGrabChannelType 'sgch'
  106.     #define SeqGrabPanelType 'sgpn'
  107.  
  108.     #define SeqGrabCompressionPanelType 'comp'
  109.     #define SeqGrabSourcePanelType 'sour'
  110.  
  111.     enum {
  112.         seqGrabToDisk = 1,
  113.         seqGrabToMemory = 2,
  114.         seqGrabDontUseTempMemory = 4,
  115.         seqGrabAppendToFile = 8,
  116.         seqGrabDontAddMovieResource = 16,
  117.         seqGrabDontMakeMovie = 32,
  118.         seqGrabPreExtendFile = 64
  119.     };
  120.     typedef unsigned long SeqGrabDataOutputEnum;
  121.  
  122.     enum {
  123.         seqGrabRecord = 1,
  124.         seqGrabPreview = 2,
  125.         seqGrabPlayDuringRecord = 4
  126.     };
  127.     typedef unsigned long SeqGrabUsageEnum;
  128.  
  129.     enum {
  130.         seqGrabHasBounds = 1,
  131.         seqGrabHasVolume = 2,
  132.         seqGrabHasDiscreteSamples = 4
  133.     };
  134.     typedef unsigned long SeqGrabChannelInfoEnum;
  135.  
  136.     typedef struct seqGrabFrameInfo {
  137.         long        frameOffset;
  138.         long        frameTime;
  139.         long        frameSize;
  140.         SGChannel    frameChannel;
  141.         long        frameRefCon;
  142.     } seqGrabFrameInfo;
  143.     
  144.     enum {
  145.         grabPictOffScreen = 1,
  146.         grabPictIgnoreClip = 2,
  147.         grabPictCurrentImage = 4
  148.     };
  149.     #define sgFlagControlledGrab (1)
  150.  
  151.     typedef pascal OSErr (*SGDataProc)(SGChannel c, Ptr p, long len, long *offset, long chRefCon,
  152.                 TimeValue time, short writeType, long refCon);
  153.  
  154.     typedef struct SGDeviceName {
  155.         Str63            name;
  156.         Handle            icon;
  157.         long            flags;
  158.         long            refCon;
  159.         long            reserved;        // zero
  160.     } SGDeviceName;
  161.  
  162.     #define sgDeviceNameFlagDeviceUnavailable (1)
  163.  
  164.     typedef struct SGDeviceListRecord {
  165.         short            count;
  166.         short            selectedIndex;
  167.         long            reserved;        // zero
  168.         SGDeviceName    entry[1];
  169.     } SGDeviceListRecord, *SGDeviceListPtr, **SGDeviceList;
  170.  
  171.     #define sgDeviceListWithIcons (1)
  172.     #define sgDeviceListDontCheckAvailability (2)
  173.  
  174.     enum {
  175.         seqGrabWriteAppend,
  176.         seqGrabWriteReserve,
  177.         seqGrabWriteFill
  178.     };
  179.  
  180.     enum {
  181.         seqGrabUnpause = 0,
  182.         seqGrabPause = 1,
  183.         seqGrabPauseForMenu = 3
  184.     };
  185.     enum {
  186.         channelFlagDontOpenResFile = 2,
  187.         channelFlagHasDependency = 4
  188.     };
  189.  
  190.     typedef pascal Boolean (*SGModalFilterProcPtr)(DialogPtr theDialog, EventRecord *theEvent,
  191.                 short *itemHit, long refCon);
  192.  
  193.     enum {
  194.         sgPanelFlagForPanel = 1
  195.     };
  196.  
  197.  
  198.  
  199.     #define channelPlayNormal 0
  200.     #define channelPlayFast 1
  201.     #define channelPlayHighQuality 2
  202.     #define channelPlayAllData 4
  203.  
  204. #ifdef __cplusplus
  205. extern "C" {
  206. #endif /*__cplusplus*/
  207. pascal ComponentResult SGInitialize (SeqGrabComponent s)  = {0x2F3C,0,0x1,0x7000,0xA82A};
  208.  
  209. pascal ComponentResult SGSetDataOutput (SeqGrabComponent s, FSSpec *movieFile, long whereFlags)  = {0x2F3C,0x8,0x2,0x7000,0xA82A};
  210.     
  211. pascal ComponentResult SGGetDataOutput (SeqGrabComponent s, FSSpec *movieFile, long *whereFlags)  = {0x2F3C,0x8,0x3,0x7000,0xA82A};
  212.  
  213. pascal ComponentResult SGSetGWorld (SeqGrabComponent s, CGrafPtr gp, GDHandle gd)  = {0x2F3C,0x8,0x4,0x7000,0xA82A};
  214. pascal ComponentResult SGGetGWorld (SeqGrabComponent s, CGrafPtr *gp, GDHandle *gd)  = {0x2F3C,0x8,0x5,0x7000,0xA82A};
  215.  
  216. pascal ComponentResult SGNewChannel (SeqGrabComponent s, OSType channelType, SGChannel *ref)  = {0x2F3C,0x8,0x6,0x7000,0xA82A};
  217. pascal ComponentResult SGDisposeChannel (SeqGrabComponent s, SGChannel c)  = {0x2F3C,0x4,0x7,0x7000,0xA82A};
  218.  
  219. pascal ComponentResult SGStartPreview (SeqGrabComponent s)  = {0x2F3C,0,0x10,0x7000,0xA82A};
  220. pascal ComponentResult SGStartRecord (SeqGrabComponent s)  = {0x2F3C,0,0x11,0x7000,0xA82A};
  221. pascal ComponentResult SGIdle (SeqGrabComponent s)  = {0x2F3C,0,0x12,0x7000,0xA82A};
  222. pascal ComponentResult SGStop (SeqGrabComponent s)  = {0x2F3C,0,0x13,0x7000,0xA82A};
  223.  
  224. pascal ComponentResult SGPause (SeqGrabComponent s, Byte pause)  = {0x2F3C,0x2,0x14,0x7000,0xA82A};
  225.  
  226. pascal ComponentResult SGPrepare (SeqGrabComponent s, Boolean prepareForPreview, Boolean prepareForRecord)  = {0x2F3C,0x4,0x15,0x7000,0xA82A};
  227. pascal ComponentResult SGRelease (SeqGrabComponent s)  = {0x2F3C,0,0x16,0x7000,0xA82A};
  228.  
  229. pascal Movie SGGetMovie (SeqGrabComponent s)  = {0x2F3C,0,0x17,0x7000,0xA82A};
  230.  
  231. pascal ComponentResult SGSetMaximumRecordTime (SeqGrabComponent s, unsigned long ticks)  = {0x2F3C,0x4,0x18,0x7000,0xA82A};
  232. pascal ComponentResult SGGetMaximumRecordTime (SeqGrabComponent s, unsigned long *ticks)  = {0x2F3C,0x4,0x19,0x7000,0xA82A};
  233.  
  234. pascal ComponentResult SGGetStorageSpaceRemaining (SeqGrabComponent s, unsigned long *bytes)  = {0x2F3C,0x4,0x1A,0x7000,0xA82A};
  235. pascal ComponentResult SGGetTimeRemaining (SeqGrabComponent s, long *ticksLeft)  = {0x2F3C,0x4,0x1B,0x7000,0xA82A};
  236.  
  237. pascal ComponentResult SGGrabPict (SeqGrabComponent s, PicHandle *p, const Rect *bounds,
  238.                 short offscreenDepth, long grabPictFlags)  = {0x2F3C,0xE,0x1C,0x7000,0xA82A};
  239.  
  240. pascal ComponentResult SGGetLastMovieResID (SeqGrabComponent s, short *resID)  = {0x2F3C,0x4,0x1D,0x7000,0xA82A};
  241.  
  242. pascal ComponentResult SGSetFlags (SeqGrabComponent s, long sgFlags)  = {0x2F3C,0x4,0x1E,0x7000,0xA82A};
  243.  
  244. pascal ComponentResult SGGetFlags (SeqGrabComponent s, long *sgFlags)  = {0x2F3C,0x4,0x1F,0x7000,0xA82A};
  245.  
  246. pascal ComponentResult SGSetDataProc (SeqGrabComponent s, SGDataProc proc, long refCon)  = {0x2F3C,0x8,0x20,0x7000,0xA82A};
  247.  
  248. pascal ComponentResult SGNewChannelFromComponent (SeqGrabComponent s, SGChannel *newChannel, Component sgChannelComponent)  = {0x2F3C,0x8,0x21,0x7000,0xA82A};
  249.  
  250. pascal ComponentResult SGDisposeDeviceList (SeqGrabComponent s, SGDeviceList list)  = {0x2F3C,0x4,0x22,0x7000,0xA82A};
  251.  
  252. pascal ComponentResult SGAppendDeviceListToMenu (SeqGrabComponent s, SGDeviceList list, MenuHandle mh)  = {0x2F3C,0x8,0x23,0x7000,0xA82A};
  253.  
  254. pascal ComponentResult SGSetSettings (SeqGrabComponent s, UserData ud, long flags)  = {0x2F3C,0x8,0x24,0x7000,0xA82A};
  255.  
  256. pascal ComponentResult SGGetSettings (SeqGrabComponent s, UserData *ud, long flags)  = {0x2F3C,0x8,0x25,0x7000,0xA82A};
  257.  
  258. pascal ComponentResult SGGetIndChannel (SeqGrabComponent s, short index, SGChannel *ref, OSType *chanType)  = {0x2F3C,0xA,0x26,0x7000,0xA82A};
  259.  
  260. pascal ComponentResult SGUpdate (SeqGrabComponent s, RgnHandle updateRgn)  = {0x2F3C,0x4,0x27,0x7000,0xA82A};
  261.  
  262. pascal ComponentResult SGGetPause (SeqGrabComponent s, Byte *paused)  = {0x2F3C,0x4,0x28,0x7000,0xA82A};
  263.  
  264. pascal ComponentResult SGSettingsDialog (SeqGrabComponent s, SGChannel c, short numPanels, Component *panelList, long flags, SGModalFilterProcPtr proc, long procRefNum)  = {0x2F3C,0x16,0x29,0x7000,0xA82A};
  265.  
  266. pascal ComponentResult SGGetAlignmentProc (SeqGrabComponent s, AlignmentProcRecordPtr alignmentProc)  = {0x2F3C,0x4,0x2A,0x7000,0xA82A};
  267.  
  268. pascal ComponentResult SGSetChannelSettings (SeqGrabComponent s, SGChannel c, UserData ud, long flags)  = {0x2F3C,0xC,0x2B,0x7000,0xA82A};
  269.  
  270. pascal ComponentResult SGGetChannelSettings (SeqGrabComponent s, SGChannel c, UserData *ud, long flags)  = {0x2F3C,0xC,0x2C,0x7000,0xA82A};
  271.  
  272.  
  273.  
  274. /*
  275.     calls from Channel to seqGrab
  276. */
  277.  
  278. pascal ComponentResult SGWriteMovieData (SeqGrabComponent s, SGChannel c, Ptr p, long len, long *offset)  = {0x2F3C,0x10,0x100,0x7000,0xA82A};
  279. pascal ComponentResult SGAddFrameReference (SeqGrabComponent s, seqGrabFrameInfo *frameInfo)  = {0x2F3C,0x4,0x101,0x7000,0xA82A};
  280. pascal ComponentResult SGGetNextFrameReference (SeqGrabComponent s, seqGrabFrameInfo *frameInfo,
  281.                     TimeValue *frameDuration, long *frameNumber)  = {0x2F3C,0xC,0x102,0x7000,0xA82A};
  282. pascal ComponentResult SGGetTimeBase (SeqGrabComponent s, TimeBase *tb)  = {0x2F3C,0x4,0x103,0x7000,0xA82A};
  283. pascal ComponentResult SGSortDeviceList (SeqGrabComponent s, SGDeviceList list)  = {0x2F3C,0x4,0x104,0x7000,0xA82A};
  284. pascal ComponentResult SGAddMovieData (SeqGrabComponent s, SGChannel c, Ptr p, long len, long *offset, long chRefCon, TimeValue time, short writeType)  = {0x2F3C,0x1A,0x105,0x7000,0xA82A};
  285. pascal ComponentResult SGChangedSource (SeqGrabComponent s, SGChannel c)  = {0x2F3C,0x4,0x106,0x7000,0xA82A};
  286.  
  287.  
  288. /*** Sequence Grab CHANNEL Component Stuff ***/
  289.  
  290. pascal ComponentResult SGSetChannelUsage (SGChannel c, long usage)  = {0x2F3C,0x4,0x80,0x7000,0xA82A};
  291. pascal ComponentResult SGGetChannelUsage (SGChannel c, long *usage)  = {0x2F3C,0x4,0x81,0x7000,0xA82A};
  292.  
  293. pascal ComponentResult SGSetChannelBounds (SGChannel c, const Rect *bounds)  = {0x2F3C,0x4,0x82,0x7000,0xA82A};
  294. pascal ComponentResult SGGetChannelBounds (SGChannel c, Rect *bounds)  = {0x2F3C,0x4,0x83,0x7000,0xA82A};
  295.  
  296. pascal ComponentResult SGSetChannelVolume (SGChannel c, short volume)  = {0x2F3C,0x2,0x84,0x7000,0xA82A};
  297. pascal ComponentResult SGGetChannelVolume (SGChannel c, short *volume)  = {0x2F3C,0x4,0x85,0x7000,0xA82A};
  298.  
  299. pascal ComponentResult SGGetChannelInfo (SGChannel c, long *channelInfo)  = {0x2F3C,0x4,0x86,0x7000,0xA82A};
  300.  
  301. pascal ComponentResult SGSetChannelPlayFlags (SGChannel c, long playFlags)  = {0x2F3C,0x4,0x87,0x7000,0xA82A};
  302. pascal ComponentResult SGGetChannelPlayFlags (SGChannel c, long *playFlags)  = {0x2F3C,0x4,0x88,0x7000,0xA82A};
  303.  
  304. pascal ComponentResult SGSetChannelMaxFrames (SGChannel c, long frameCount)  = {0x2F3C,0x4,0x89,0x7000,0xA82A};
  305. pascal ComponentResult SGGetChannelMaxFrames (SGChannel c, long *frameCount)  = {0x2F3C,0x4,0x8A,0x7000,0xA82A};
  306.  
  307. pascal ComponentResult SGSetChannelRefCon (SGChannel c, long refCon)  = {0x2F3C,0x4,0x8B,0x7000,0xA82A};
  308.  
  309. pascal ComponentResult SGSetChannelClip (SGChannel c, RgnHandle theClip)  = {0x2F3C,0x4,0x8C,0x7000,0xA82A};
  310.  
  311. pascal ComponentResult SGGetChannelClip (SGChannel c, RgnHandle *theClip)  = {0x2F3C,0x4,0x8D,0x7000,0xA82A};
  312.  
  313. pascal ComponentResult SGGetChannelSampleDescription (SGChannel c, Handle sampleDesc)  = {0x2F3C,0x4,0x8E,0x7000,0xA82A};
  314.  
  315. pascal ComponentResult SGGetChannelDeviceList (SGChannel c, long selectionFlags, SGDeviceList *list)  = {0x2F3C,0x8,0x8F,0x7000,0xA82A};
  316.  
  317. pascal ComponentResult SGSetChannelDevice (SGChannel c, StringPtr name)  = {0x2F3C,0x4,0x90,0x7000,0xA82A};
  318.  
  319. pascal ComponentResult SGSetChannelMatrix (SGChannel c, const MatrixRecord *m)  = {0x2F3C,0x4,0x91,0x7000,0xA82A};
  320.  
  321. pascal ComponentResult SGGetChannelMatrix (SGChannel c, MatrixRecord *m)  = {0x2F3C,0x4,0x92,0x7000,0xA82A};
  322.  
  323. pascal ComponentResult SGGetChannelTimeScale (SGChannel c, TimeScale *scale)  = {0x2F3C,0x4,0x93,0x7000,0xA82A};
  324.  
  325. pascal ComponentResult SGChannelPutPicture (SGChannel c)  = {0x2F3C,0,0x94,0x7000,0xA82A};
  326.  
  327. /*
  328.     calls from seqGrab to Channel
  329. */
  330.  
  331. pascal ComponentResult SGInitChannel (SGChannel c, SeqGrabComponent owner)  = {0x2F3C,0x4,0x180,0x7000,0xA82A};
  332. pascal ComponentResult SGWriteSamples (SGChannel c, Movie m, AliasHandle theFile)  = {0x2F3C,0x8,0x181,0x7000,0xA82A};
  333. pascal ComponentResult SGGetDataRate (SGChannel c, long *bytesPerSecond)  = {0x2F3C,0x4,0x182,0x7000,0xA82A};
  334. pascal ComponentResult SGAlignChannelRect (SGChannel c, Rect *r)  = {0x2F3C,0x4,0x183,0x7000,0xA82A};
  335.  
  336. /*
  337.     Dorky dialog panel calls
  338. */
  339.  
  340. pascal ComponentResult SGPanelGetDitl (SeqGrabComponent s, Handle *ditl)  = {0x2F3C,0x4,0x200,0x7000,0xA82A};
  341. pascal ComponentResult SGPanelGetTitle (SeqGrabComponent s, Str255 title)  = {0x2F3C,0x4,0x201,0x7000,0xA82A};
  342. pascal ComponentResult SGPanelCanRun (SeqGrabComponent s, SGChannel c)  = {0x2F3C,0x4,0x202,0x7000,0xA82A};
  343. pascal ComponentResult SGPanelInstall (SeqGrabComponent s, SGChannel c, DialogPtr d, short itemOffset)  = {0x2F3C,0xA,0x203,0x7000,0xA82A};
  344. pascal ComponentResult SGPanelEvent (SeqGrabComponent s, SGChannel c, DialogPtr d, short itemOffset,
  345.         EventRecord *theEvent, short *itemHit, Boolean *handled)  = {0x2F3C,0x16,0x204,0x7000,0xA82A};
  346. pascal ComponentResult SGPanelItem (SeqGrabComponent s, SGChannel c, DialogPtr d, short itemOffset, short itemNum)  = {0x2F3C,0xC,0x205,0x7000,0xA82A};
  347. pascal ComponentResult SGPanelRemove (SeqGrabComponent s, SGChannel c, DialogPtr d, short itemOffset)  = {0x2F3C,0xA,0x206,0x7000,0xA82A};
  348. pascal ComponentResult SGPanelSetGrabber (SeqGrabComponent s, SeqGrabComponent sg)  = {0x2F3C,0x4,0x207,0x7000,0xA82A};
  349. pascal ComponentResult SGPanelSetResFile (SeqGrabComponent s, short resRef)  = {0x2F3C,0x2,0x208,0x7000,0xA82A};
  350. pascal ComponentResult SGPanelGetSettings (SeqGrabComponent s, SGChannel c, UserData *ud, long flags)  = {0x2F3C,0xC,0x209,0x7000,0xA82A};
  351. pascal ComponentResult SGPanelSetSettings (SeqGrabComponent s, SGChannel c, UserData ud, long flags)  = {0x2F3C,0xC,0x20A,0x7000,0xA82A};
  352. pascal ComponentResult SGPanelValidateInput (SeqGrabComponent s, Boolean *ok)  = {0x2F3C,0x4,0x20B,0x7000,0xA82A};
  353. #ifdef __cplusplus
  354. }
  355. #endif /*__cplusplus*/
  356.  
  357.  
  358. /*** Sequence Grab VIDEO CHANNEL Component Stuff ***/
  359.  
  360. /*
  361.     Video stuff
  362. */
  363.  
  364.     typedef struct SGCompressInfo {
  365.         Ptr                buffer;
  366.         unsigned long    bufferSize;
  367.         unsigned char    similarity;
  368.         unsigned char    reserved;
  369.     } SGCompressInfo;
  370.  
  371. typedef pascal ComponentResult (*GrabProc)(SGChannel c, short bufferNum, long refCon);
  372. typedef pascal ComponentResult (*GrabCompleteProc)(SGChannel c, short bufferNum, Boolean *done, long refCon);
  373.  
  374. typedef pascal ComponentResult (*DisplayProc)(SGChannel c, short bufferNum, MatrixRecord *mp, RgnHandle clipRgn, long refCon);
  375.  
  376. typedef pascal ComponentResult (*CompressProc)(SGChannel c, short bufferNum, long refCon);
  377. typedef pascal ComponentResult (*CompressCompleteProc)(SGChannel c, short bufferNum,
  378.                                         Boolean *done, SGCompressInfo *ci, long refCon);
  379.  
  380. typedef pascal ComponentResult (*AddFrameProc)(SGChannel c, short bufferNum, TimeValue atTime, TimeScale scale,
  381.                             const SGCompressInfo *ci, long refCon);
  382.  
  383. typedef pascal ComponentResult (*TransferFrameProc)(SGChannel c, short bufferNum, MatrixRecord *mp, RgnHandle clipRgn, long refCon);
  384.  
  385. typedef pascal ComponentResult (*GrabCompressCompleteProc)(SGChannel c, Boolean *done, SGCompressInfo *ci, TimeRecord *t, long refCon);
  386. typedef pascal ComponentResult (*DisplayCompressProc)(SGChannel c, Ptr dataPtr, ImageDescriptionHandle desc, MatrixRecord *mp, RgnHandle clipRgn, long refCon);
  387.  
  388.     struct VideoBottles {
  389.         short                        procCount;
  390.         GrabProc                    grabProc;
  391.         GrabCompleteProc            grabCompleteProc;
  392.         DisplayProc                    displayProc;
  393.         CompressProc                compressProc;
  394.         CompressCompleteProc        compressCompleteProc;
  395.         AddFrameProc                addFrameProc;
  396.         TransferFrameProc            transferFrameProc;
  397.         GrabCompressCompleteProc    grabCompressCompleteProc;
  398.         DisplayCompressProc            displayCompressProc;
  399.     };
  400.     typedef struct VideoBottles VideoBottles;
  401.  
  402.  
  403. #ifdef __cplusplus
  404. extern "C" {
  405. #endif /*__cplusplus*/
  406.  
  407. pascal ComponentResult SGGetSrcVideoBounds (SGChannel c, Rect *r)  = {0x2F3C,0x4,0x100,0x7000,0xA82A};
  408. pascal ComponentResult SGSetVideoRect (SGChannel c, Rect *r)  = {0x2F3C,0x4,0x101,0x7000,0xA82A};
  409. pascal ComponentResult SGGetVideoRect (SGChannel c, Rect *r)  = {0x2F3C,0x4,0x102,0x7000,0xA82A};
  410.  
  411. pascal ComponentResult SGGetVideoCompressorType (SGChannel c, OSType *compressorType)  = {0x2F3C,0x4,0x103,0x7000,0xA82A};
  412. pascal ComponentResult SGSetVideoCompressorType (SGChannel c, OSType compressorType)  = {0x2F3C,0x4,0x104,0x7000,0xA82A};
  413.  
  414. pascal ComponentResult SGSetVideoCompressor (SGChannel c, short depth, CompressorComponent compressor,
  415.             CodecQ spatialQuality, CodecQ temporalQuality, long keyFrameRate)  = {0x2F3C,0x12,0x105,0x7000,0xA82A};
  416. pascal ComponentResult SGGetVideoCompressor (SGChannel c, short *depth, CompressorComponent *compressor,
  417.             CodecQ *spatialQuality, CodecQ *temporalQuality, long *keyFrameRate)  = {0x2F3C,0x14,0x106,0x7000,0xA82A};
  418.  
  419. pascal ComponentInstance SGGetVideoDigitizerComponent (SGChannel c)  = {0x2F3C,0,0x107,0x7000,0xA82A};
  420. pascal ComponentResult SGSetVideoDigitizerComponent (SGChannel c, ComponentInstance vdig)  = {0x2F3C,0x4,0x108,0x7000,0xA82A};
  421. pascal ComponentResult SGVideoDigitizerChanged (SGChannel c)  = {0x2F3C,0,0x109,0x7000,0xA82A};
  422.  
  423. pascal ComponentResult SGSetVideoBottlenecks (SGChannel c, VideoBottles *vb)  = {0x2F3C,0x4,0x10A,0x7000,0xA82A};
  424. pascal ComponentResult SGGetVideoBottlenecks (SGChannel c, VideoBottles *vb)  = {0x2F3C,0x4,0x10B,0x7000,0xA82A};
  425.  
  426. pascal ComponentResult SGGrabFrame (SGChannel c, short bufferNum)  = {0x2F3C,0x2,0x10C,0x7000,0xA82A};
  427. pascal ComponentResult SGGrabFrameComplete (SGChannel c, short bufferNum, Boolean *done)  = {0x2F3C,0x6,0x10D,0x7000,0xA82A};
  428. pascal ComponentResult SGDisplayFrame (SGChannel c, short bufferNum, MatrixRecord *mp, RgnHandle clipRgn)  = {0x2F3C,0xA,0x10E,0x7000,0xA82A};
  429.  
  430. pascal ComponentResult SGCompressFrame (SGChannel c, short bufferNum)  = {0x2F3C,0x2,0x10F,0x7000,0xA82A};
  431. pascal ComponentResult SGCompressFrameComplete (SGChannel c, short bufferNum, Boolean *done, SGCompressInfo *ci)  = {0x2F3C,0xA,0x110,0x7000,0xA82A};
  432.  
  433. pascal ComponentResult SGAddFrame (SGChannel c, short bufferNum, TimeValue atTime, TimeScale scale, const SGCompressInfo *ci)  = {0x2F3C,0xE,0x111,0x7000,0xA82A};
  434.  
  435. pascal ComponentResult SGTransferFrameForCompress (SGChannel c, short bufferNum, MatrixRecord *mp, RgnHandle clipRgn)  = {0x2F3C,0xA,0x112,0x7000,0xA82A};
  436.  
  437. pascal ComponentResult SGSetCompressBuffer (SGChannel c, short depth, const Rect *compressSize)  = {0x2F3C,0x6,0x113,0x7000,0xA82A};
  438.  
  439. pascal ComponentResult SGGetCompressBuffer (SGChannel c, short *depth, Rect *compressSize)  = {0x2F3C,0x8,0x114,0x7000,0xA82A};
  440.  
  441. pascal ComponentResult SGGetBufferInfo (SGChannel c, short bufferNum, 
  442.                     PixMapHandle *bufferPM, Rect *bufferRect,
  443.                     GWorldPtr *compressBuffer, Rect *compressBufferRect)  = {0x2F3C,0x12,0x115,0x7000,0xA82A};
  444.  
  445. pascal ComponentResult SGSetUseScreenBuffer (SGChannel c, Boolean useScreenBuffer)  = {0x2F3C,0x2,0x116,0x7000,0xA82A};
  446.  
  447. pascal ComponentResult SGGetUseScreenBuffer (SGChannel c, Boolean *useScreenBuffer)  = {0x2F3C,0x4,0x117,0x7000,0xA82A};
  448.  
  449. pascal ComponentResult SGGrabCompressComplete (SGChannel c, Boolean *done, SGCompressInfo *ci, TimeRecord *tr)  = {0x2F3C,0xC,0x118,0x7000,0xA82A};
  450. pascal ComponentResult SGDisplayCompress (SGChannel c, Ptr dataPtr, ImageDescriptionHandle desc, MatrixRecord *mp, RgnHandle clipRgn)  = {0x2F3C,0x10,0x119,0x7000,0xA82A};
  451.  
  452. pascal ComponentResult SGSetFrameRate (SGChannel c, Fixed frameRate)  = {0x2F3C,0x4,0x11A,0x7000,0xA82A};
  453.  
  454. pascal ComponentResult SGGetFrameRate (SGChannel c, Fixed *frameRate)  = {0x2F3C,0x4,0x11B,0x7000,0xA82A};
  455.  
  456.  
  457.  
  458. #ifdef __cplusplus
  459. }
  460. #endif /*__cplusplus*/
  461.  
  462.  
  463. /*** Sequence Grab SOUND CHANNEL Component Stuff ***/
  464.  
  465.  
  466. /*
  467.     Sound stuff
  468. */
  469.  
  470. #ifdef __cplusplus
  471. extern "C" {
  472. #endif /*__cplusplus*/
  473.  
  474. pascal ComponentResult SGSetSoundInputDriver (SGChannel c, const Str255 driverName)  = {0x2F3C,0x4,0x100,0x7000,0xA82A};
  475. pascal long SGGetSoundInputDriver (SGChannel c)  = {0x2F3C,0,0x101,0x7000,0xA82A};
  476. pascal ComponentResult SGSoundInputDriverChanged (SGChannel c)  = {0x2F3C,0,0x102,0x7000,0xA82A};
  477.  
  478. pascal ComponentResult SGSetSoundRecordChunkSize (SGChannel c, long seconds)  = {0x2F3C,0x4,0x103,0x7000,0xA82A};
  479. pascal long SGGetSoundRecordChunkSize (SGChannel c)  = {0x2F3C,0,0x104,0x7000,0xA82A};
  480.  
  481. pascal ComponentResult SGSetSoundInputRate (SGChannel c, Fixed rate)  = {0x2F3C,0x4,0x105,0x7000,0xA82A};
  482. pascal Fixed SGGetSoundInputRate (SGChannel c)  = {0x2F3C,0,0x106,0x7000,0xA82A};
  483.  
  484. pascal ComponentResult SGSetSoundInputParameters (SGChannel c, short sampleSize, short numChannels,
  485.                         OSType compressionType)  = {0x2F3C,0x8,0x107,0x7000,0xA82A};
  486. pascal ComponentResult SGGetSoundInputParameters (SGChannel c, short *sampleSize, short *numChannels,
  487.                         OSType *compressionType)  = {0x2F3C,0xC,0x108,0x7000,0xA82A};
  488. #ifdef __cplusplus
  489. }
  490. #endif /*__cplusplus*/
  491.  
  492.  
  493. #define sgChannelAtom 'chan'
  494.  
  495. #define sgChannelSettingsAtom 'ctom'
  496. #define sgChannelDescription 'cdsc'
  497. #define sgChannelSettings 'cset'
  498.  
  499. #define sgDeviceNameType 'name'
  500. #define sgUsageType 'use '
  501. #define sgPlayFlagsType 'plyf'
  502. #define sgClipType 'clip'
  503. #define sgMatrixType 'mtrx'
  504. #define sgVolumeType 'volu'
  505.  
  506. #define sgPanelSettingsAtom 'ptom'
  507. #define sgPanelDescription 'pdsc'
  508. #define sgPanelSettings 'pset'
  509.  
  510. #define sgcSoundCompressionType 'scmp'
  511. #define sgcSoundSampleRateType 'srat'
  512. #define sgcSoundChannelCountType 'schn'
  513. #define sgcSoundSampleSizeType 'ssiz'
  514. #define sgcSoundInputType 'sinp'
  515. #define sgcSoundGainType 'gain'
  516.  
  517. #define sgcVideoHueType 'hue '
  518. #define sgcVideoSaturationType 'satr'
  519. #define sgcVideoContrastType 'trst'
  520. #define sgcVideoSharpnessType 'shrp'
  521. #define sgcVideoBrigtnessType 'brit'
  522. #define sgcVideoBlackLevelType 'blkl'
  523. #define sgcVideoWhiteLevelType 'whtl'
  524.  
  525. #define sgcVideoInputType 'vinp'
  526. #define sgcVideoFormatType 'vstd'
  527. #define sgcVideoFilterType 'vflt'
  528.  
  529. #define sgcVideoRectType 'vrct'
  530. #define sgVideoDigitizerType 'vdig'
  531.  
  532. enum {
  533.     noDeviceForChannel = -9400,
  534.     grabTimeComplete = -9401,
  535.     cantDoThatInCurrentMode = -9402,
  536.     notEnoughMemoryToGrab = -9403,
  537.     notEnoughDiskSpaceToGrab = -9404,
  538.     couldntGetRequiredComponent = -9405,
  539.     badSGChannel = -9406,
  540.     seqGrabInfoNotAvailable = -9407,
  541.     deviceCantMeetRequest = -9408
  542. };
  543.  
  544.  
  545. enum {
  546.     kSGInitializeSelect = 0x1,
  547.     kSGSetDataOutputSelect = 0x2,
  548.     kSGGetDataOutputSelect = 0x3,
  549.     kSGSetGWorldSelect = 0x4,
  550.     kSGGetGWorldSelect = 0x5,
  551.     kSGNewChannelSelect = 0x6,
  552.     kSGDisposeChannelSelect = 0x7,
  553.     kSGStartPreviewSelect = 0x10,
  554.     kSGStartRecordSelect = 0x11,
  555.     kSGIdleSelect = 0x12,
  556.     kSGStopSelect = 0x13,
  557.     kSGPauseSelect = 0x14,
  558.     kSGPrepareSelect = 0x15,
  559.     kSGReleaseSelect = 0x16,
  560.     kSGGetMovieSelect = 0x17,
  561.     kSGSetMaximumRecordTimeSelect = 0x18,
  562.     kSGGetMaximumRecordTimeSelect = 0x19,
  563.     kSGGetStorageSpaceRemainingSelect = 0x1A,
  564.     kSGGetTimeRemainingSelect = 0x1B,
  565.     kSGGrabPictSelect = 0x1C,
  566.     kSGGetLastMovieResIDSelect = 0x1D,
  567.     kSGSetFlagsSelect = 0x1E,
  568.     kSGGetFlagsSelect = 0x1F,
  569.     kSGSetDataProcSelect = 0x20,
  570.     kSGNewChannelFromComponentSelect = 0x21,
  571.     kSGDisposeDeviceListSelect = 0x22,
  572.     kSGAppendDeviceListToMenuSelect = 0x23,
  573.     kSGSetSettingsSelect = 0x24,
  574.     kSGGetSettingsSelect = 0x25,
  575.     kSGGetIndChannelSelect = 0x26,
  576.     kSGUpdateSelect = 0x27,
  577.     kSGGetPauseSelect = 0x28,
  578.     kSGSettingsDialogSelect = 0x29,
  579.     kSGGetAlignmentProcSelect = 0x2A,
  580.     kSGSetChannelSettingsSelect = 0x2B,
  581.     kSGGetChannelSettingsSelect = 0x2C,
  582.     kSGWriteMovieDataSelect = 0x100,
  583.     kSGAddFrameReferenceSelect = 0x101,
  584.     kSGGetNextFrameReferenceSelect = 0x102,
  585.     kSGGetTimeBaseSelect = 0x103,
  586.     kSGSortDeviceListSelect = 0x104,
  587.     kSGAddMovieDataSelect = 0x105,
  588.     kSGChangedSourceSelect = 0x106,
  589.     kSGCSetChannelUsageSelect = 0x80,
  590.     kSGCGetChannelUsageSelect = 0x81,
  591.     kSGCSetChannelBoundsSelect = 0x82,
  592.     kSGCGetChannelBoundsSelect = 0x83,
  593.     kSGCSetChannelVolumeSelect = 0x84,
  594.     kSGCGetChannelVolumeSelect = 0x85,
  595.     kSGCGetChannelInfoSelect = 0x86,
  596.     kSGCSetChannelPlayFlagsSelect = 0x87,
  597.     kSGCGetChannelPlayFlagsSelect = 0x88,
  598.     kSGCSetChannelMaxFramesSelect = 0x89,
  599.     kSGCGetChannelMaxFramesSelect = 0x8A,
  600.     kSGCSetChannelRefConSelect = 0x8B,
  601.     kSGCSetChannelClipSelect = 0x8C,
  602.     kSGCGetChannelClipSelect = 0x8D,
  603.     kSGCGetChannelSampleDescriptionSelect = 0x8E,
  604.     kSGCGetChannelDeviceListSelect = 0x8F,
  605.     kSGCSetChannelDeviceSelect = 0x90,
  606.     kSGCSetChannelMatrixSelect = 0x91,
  607.     kSGCGetChannelMatrixSelect = 0x92,
  608.     kSGCGetChannelTimeScaleSelect = 0x93,
  609.     kSGCChannelPutPictureSelect = 0x94,
  610.     kSGCInitChannelSelect = 0x180,
  611.     kSGCWriteSamplesSelect = 0x181,
  612.     kSGCGetDataRateSelect = 0x182,
  613.     kSGCAlignChannelRectSelect = 0x183,
  614.     kSGCPanelGetDitlSelect = 0x200,
  615.     kSGCPanelGetTitleSelect = 0x201,
  616.     kSGCPanelCanRunSelect = 0x202,
  617.     kSGCPanelInstallSelect = 0x203,
  618.     kSGCPanelEventSelect = 0x204,
  619.     kSGCPanelItemSelect = 0x205,
  620.     kSGCPanelRemoveSelect = 0x206,
  621.     kSGCPanelSetGrabberSelect = 0x207,
  622.     kSGCPanelSetResFileSelect = 0x208,
  623.     kSGCPanelGetSettingsSelect = 0x209,
  624.     kSGCPanelSetSettingsSelect = 0x20A,
  625.     kSGCPanelValidateInputSelect = 0x20B,
  626.     kSGCGetSrcVideoBoundsSelect = 0x100,
  627.     kSGCSetVideoRectSelect = 0x101,
  628.     kSGCGetVideoRectSelect = 0x102,
  629.     kSGCGetVideoCompressorTypeSelect = 0x103,
  630.     kSGCSetVideoCompressorTypeSelect = 0x104,
  631.     kSGCSetVideoCompressorSelect = 0x105,
  632.     kSGCGetVideoCompressorSelect = 0x106,
  633.     kSGCGetVideoDigitizerComponentSelect = 0x107,
  634.     kSGCSetVideoDigitizerComponentSelect = 0x108,
  635.     kSGCVideoDigitizerChangedSelect = 0x109,
  636.     kSGCSetVideoBottlenecksSelect = 0x10A,
  637.     kSGCGetVideoBottlenecksSelect = 0x10B,
  638.     kSGCGrabFrameSelect = 0x10C,
  639.     kSGCGrabFrameCompleteSelect = 0x10D,
  640.     kSGCDisplayFrameSelect = 0x10E,
  641.     kSGCCompressFrameSelect = 0x10F,
  642.     kSGCCompressFrameCompleteSelect = 0x110,
  643.     kSGCAddFrameSelect = 0x111,
  644.     kSGCTransferFrameForCompressSelect = 0x112,
  645.     kSGCSetCompressBufferSelect = 0x113,
  646.     kSGCGetCompressBufferSelect = 0x114,
  647.     kSGCGetBufferInfoSelect = 0x115,
  648.     kSGCSetUseScreenBufferSelect = 0x116,
  649.     kSGCGetUseScreenBufferSelect = 0x117,
  650.     kSGCGrabCompressCompleteSelect = 0x118,
  651.     kSGCDisplayCompressSelect = 0x119,
  652.     kSGCSetFrameRateSelect = 0x11A,
  653.     kSGCGetFrameRateSelect = 0x11B,
  654.     kSGCSetSoundInputDriverSelect = 0x100,
  655.     kSGCGetSoundInputDriverSelect = 0x101,
  656.     kSGCSoundInputDriverChangedSelect = 0x102,
  657.     kSGCSetSoundRecordChunkSizeSelect = 0x103,
  658.     kSGCGetSoundRecordChunkSizeSelect = 0x104,
  659.     kSGCSetSoundInputRateSelect = 0x105,
  660.     kSGCGetSoundInputRateSelect = 0x106,
  661.     kSGCSetSoundInputParametersSelect = 0x107,
  662.     kSGCGetSoundInputParametersSelect = 0x108 
  663. };
  664.  
  665. /* Standard type for video digitizers */
  666.  
  667. #define    videoDigitizerComponentType        'vdig'        
  668. #define vdigInterfaceRev                2L
  669.  
  670. /* Input Format Standards */
  671.  
  672. #define    ntscIn            0                /* current input format */
  673. #define    currentIn        0                /* ntsc input format */
  674. #define    palIn            1                /* pal input format */
  675. #define    secamIn            2                /* secam input format */
  676. #define    ntscReallyIn    3                /* ntsc input format */
  677.  
  678. /* Input Formats */
  679.  
  680. #define    compositeIn        0                /* input is composite format */
  681. #define    sVideoIn        1                /* input is sVideo format */
  682. #define rgbComponentIn    2                /* input is rgb component format */
  683.  
  684. /* Video Digitizer PlayThru States */
  685.  
  686. #define vdPlayThruOff        0
  687. #define vdPlayThruOn        1
  688.  
  689. /* Input Color Space Modes */
  690.  
  691. #define vdDigitizerBW        0            /* black and white */
  692. #define vdDigitizerRGB        1            /* rgb color */
  693.  
  694. /* Phase Lock Loop Modes */
  695.  
  696. #define vdBroadcastMode        0            /* Broadcast / Laser Disk video mode */
  697. #define vdVTRMode            1            /* VCR / Magnetic media mode */
  698.  
  699. /* Field Select Options */
  700. #define vdUseAnyField 0                    /* Digitizers choice on field use */
  701. #define vdUseOddField 1                    /* Use odd field for half size vert and smaller */
  702. #define vdUseEvenField 2                /* Use even field for half size vert and smaller */
  703.  
  704. /* vdig types */
  705.  
  706. #define vdTypeBasic            0            /* basic, no clipping */
  707. #define vdTypeAlpha            1            /* supports clipping with alpha channel */
  708. #define vdTypeMask            2            /* supports clipping with mask plane */
  709. #define vdTypeKey            3            /* supports clipping with key color(s) */
  710.  
  711. /* Digitizer Error Codes */
  712.  
  713. #define    digiUnimpErr    -2201             /* feature unimplemented */
  714. #define    qtParamErr        -2202            /* bad input parameter (out of range, etc) */
  715. #define    matrixErr        -2203            /* bad matrix, digitizer did nothing */
  716. #define    notExactMatrix    -2204            /* warning of bad matrix, digitizer did its best */
  717. #define    noMoreKeyColors    -2205            /* all key indexes in use */
  718. #define    notExactSize    -2206            /* Can╒t do exact size requested */
  719. #define    badDepth        -2207            /* Can╒t digitize into this depth */
  720. #define    noDMA            -2208            /* Can╒t do DMA digitizing (i.e. can't go to requested dest */
  721. #define badCallOrder    -2209            /* Usually due to a status call being called prior to being setup first */
  722.  
  723. /* Digitizer Input Capability/Current Flags    */
  724.  
  725. #define    digiInDoesNTSC        (1L<<0)        /* digitizer supports NTSC input format */
  726. #define    digiInDoesPAL        (1L<<1)        /* digitizer supports PAL input format */
  727. #define    digiInDoesSECAM        (1L<<2)        /* digitizer supports SECAM input format */
  728. #define digiInDoesGenLock    (1L<<7)        /* digitizer does genlock */
  729.  
  730. #define    digiInDoesComposite    (1L<<8)        /* digitizer supports composite input type */
  731. #define    digiInDoesSVideo    (1L<<9)        /* digitizer supports S-Video input type */
  732. #define digiInDoesComponent (1L<<10)    /* digitizer supports component (rgb) input type */
  733. #define    digiInVTR_Broadcast    (1L<<11)    /* digitizer can differentiate between the two */
  734.  
  735. #define    digiInDoesColor        (1L<<12)    /* digitizer supports color */
  736. #define    digiInDoesBW        (1L<<13)    /* digitizer supports black & white */
  737.  
  738. /* Digitizer Input Current Flags (these are valid only during active operating conditions)    */
  739.  
  740. #define    digiInSignalLock    (1L<<31)    /* digitizer detects input signal is locked */
  741.                                         /* this bit = horiz lock || vertical lock */
  742.  
  743. /* Digitizer Output Capability/Current Flags */
  744.  
  745. #define    digiOutDoes1            (1L<<0)        /* digitizer supports 1 bit pixels */
  746. #define    digiOutDoes2            (1L<<1)        /* digitizer supports 2 bit pixels */
  747. #define    digiOutDoes4            (1L<<2)        /* digitizer supports 4 bit pixels */
  748. #define    digiOutDoes8            (1L<<3)        /* digitizer supports 8 bit pixels */
  749. #define    digiOutDoes16            (1L<<4)        /* digitizer supports 16 bit pixels */
  750. #define    digiOutDoes32            (1L<<5)        /* digitizer supports 32 bit pixels */
  751. #define    digiOutDoesDither        (1L<<6)        /* digitizer dithers in indexed modes */
  752. #define    digiOutDoesStretch        (1L<<7)        /* digitizer can arbitrarily stretch */
  753. #define    digiOutDoesShrink        (1L<<8)        /* digitizer can arbitrarily shrink */
  754. #define    digiOutDoesMask            (1L<<9)        /* digitizer can mask to clipping regions */
  755.  
  756. #define    digiOutDoesDouble        (1L<<11)    /* digitizer can stretch to exactly double size */
  757. #define    digiOutDoesQuad            (1L<<12)    /* digitizer can stretch exactly quadruple size */
  758. #define    digiOutDoesQuarter        (1L<<13)    /* digitizer can shrink to exactly quarter size */
  759. #define    digiOutDoesSixteenth    (1L<<14)    /* digitizer can shrink to exactly sixteenth size */
  760.  
  761. #define    digiOutDoesRotate        (1L<<15)    /* digitizer supports rotate transformations */
  762. #define    digiOutDoesHorizFlip    (1L<<16)    /* digitizer supports horizontal flips Sx < 0 */
  763. #define    digiOutDoesVertFlip        (1L<<17)    /* digitizer supports vertical flips Sy < 0 */
  764. #define    digiOutDoesSkew            (1L<<18)    /* digitizer supports skew (shear,twist) */
  765. #define    digiOutDoesBlend        (1L<<19)
  766. #define    digiOutDoesWarp            (1L<<20)
  767.  
  768. #define    digiOutDoesHW_DMA        (1L<<21)    /* digitizer not constrained to local device */
  769. #define digiOutDoesHWPlayThru    (1L<<22)    /* digitizer doesn't need time to play thru */
  770. #define    digiOutDoesILUT            (1L<<23)    /* digitizer does inverse LUT for index modes */
  771. #define    digiOutDoesKeyColor        (1L<<24)    /* digitizer does key color functions too */
  772. #define digiOutDoesAsyncGrabs    (1L<<25)    /* digitizer supports async grabs */
  773. #define digiOutDoesUnreadableScreenBits (1L<<26)    /* playthru doesn't generate readable bits on screen*/
  774. #define digiOutDoesCompress        (1L<<27)    /* supports alternate output data types */
  775. #define digiOutDoesCompressOnly    (1L<<28)    /* can't provide raw frames anywhere */
  776. #define digiOutDoesPlayThruDuringCompress (1L<<29)    /* digi can do playthru while providing compressed data */
  777.  
  778. /* Types */
  779.  
  780. typedef ComponentInstance VideoDigitizerComponent;
  781. typedef ComponentResult VideoDigitizerError;
  782.  
  783. typedef struct {
  784.     short        vdigType;
  785.     long         inputCapabilityFlags;
  786.     long         outputCapabilityFlags;    
  787.     long         inputCurrentFlags;
  788.     long         outputCurrentFlags;
  789.     short        slot;                    /* temporary for connection purposes */
  790.     GDHandle    gdh;                    /* temporary for digitizers that have preferred screen */
  791.     GDHandle    maskgdh;                /* temporary for digitizers that have mask planes */
  792.     short        minDestHeight;            /* Smallest resizable height */        
  793.     short        minDestWidth;            /* Smallest resizable width */
  794.     short        maxDestHeight;            /* Largest resizable height */
  795.     short        maxDestWidth;            /* Largest resizable height */
  796.     short        blendLevels;            /* Number of blend levels supported (2 if 1 bit mask) */
  797.     long        reserved;                /* reserved */
  798. } DigitizerInfo;
  799.  
  800. typedef struct {
  801.     long        type;
  802.     long        reserved;
  803. } VdigType;
  804.  
  805. typedef struct {
  806.     short        count;
  807.     VdigType    list[1];
  808. } VdigTypeList;
  809.  
  810. typedef struct {
  811.     PixMapHandle    dest;
  812.     Point            location;
  813.     long            reserved;
  814. } VdigBufferRec;
  815.  
  816. typedef struct {
  817.     short            count;
  818.     MatrixRecordPtr    matrix;
  819.     RgnHandle        mask;
  820.     VdigBufferRec    list[1];
  821. } VdigBufferRecList;
  822.  
  823. typedef VdigBufferRecList *VdigBufferRecListPtr, **VdigBufferRecListHandle;
  824.  
  825. typedef pascal void (*VdigIntProc)(long flags, long refcon);
  826.  
  827. typedef struct VDCompressionList {
  828.     CodecComponent        codec;
  829.     CodecType            cType;
  830.     Str63                typeName;
  831.     Str63                name;
  832.     long                formatFlags;
  833.     long                compressFlags;
  834.     long                reserved;
  835. } VDCompressionList, *VDCompressionListPtr, **VDCompressionListHandle;
  836.  
  837. enum {
  838.     dmaDepth1 = 1,
  839.     dmaDepth2 = 2,
  840.     dmaDepth4 = 4 ,
  841.     dmaDepth8 = 8,
  842.     dmaDepth16 = 16,
  843.     dmaDepth32 = 32,
  844.     dmaDepth2Gray = 64,
  845.     dmaDepth4Gray = 128,
  846.     dmaDepth8Gray = 256
  847. };
  848.  
  849. #define kVDIGControlledFrameRate (-1)
  850.  
  851.  
  852. // number of vdig calls
  853. enum {
  854.     kvdigSelectors = 82
  855. };
  856.  
  857. #ifdef __cplusplus
  858. extern "C" {
  859. #endif /*__cplusplus*/
  860. pascal VideoDigitizerError VDGetMaxSrcRect(VideoDigitizerComponent ci, short inputStd, Rect *maxSrcRect)     = {0x2F3C,0x6,0x1,0x7000,0xA82A};
  861.     
  862. pascal VideoDigitizerError VDGetActiveSrcRect(VideoDigitizerComponent ci, short inputStd, Rect *activeSrcRect)     = {0x2F3C,0x6,0x2,0x7000,0xA82A};
  863.     
  864. pascal VideoDigitizerError VDSetDigitizerRect(VideoDigitizerComponent ci, Rect *digitizerRect)     = {0x2F3C,0x4,0x3,0x7000,0xA82A};
  865.     
  866. pascal VideoDigitizerError VDGetDigitizerRect(VideoDigitizerComponent ci, Rect *digitizerRect)     = {0x2F3C,0x4,0x4,0x7000,0xA82A};
  867.     
  868. pascal VideoDigitizerError VDGetVBlankRect(VideoDigitizerComponent ci, short inputStd, Rect *vBlankRect)     = {0x2F3C,0x6,0x5,0x7000,0xA82A};
  869.     
  870. pascal VideoDigitizerError VDGetMaskPixMap(VideoDigitizerComponent ci, PixMapHandle maskPixMap)     = {0x2F3C,0x4,0x6,0x7000,0xA82A};
  871.     
  872. pascal VideoDigitizerError VDGetPlayThruDestination(VideoDigitizerComponent ci, PixMapHandle *dest, Rect *destRect,
  873.              MatrixRecord *m, RgnHandle *mask)     = {0x2F3C,0x10,0x8,0x7000,0xA82A};
  874.     
  875. pascal VideoDigitizerError VDUseThisCLUT(VideoDigitizerComponent ci, CTabHandle colorTableHandle)     = {0x2F3C,0x4,0x9,0x7000,0xA82A};        
  876.     
  877. pascal VideoDigitizerError VDSetInputGammaValue(VideoDigitizerComponent ci, Fixed channel1, Fixed channel2, Fixed channel3)     = {0x2F3C,0xC,0xA,0x7000,0xA82A};
  878.     
  879. pascal VideoDigitizerError VDGetInputGammaValue(VideoDigitizerComponent ci, Fixed *channel1, Fixed *channel2, Fixed *channel3)     = {0x2F3C,0xC,0xB,0x7000,0xA82A};
  880.     
  881. pascal VideoDigitizerError VDSetBrightness(VideoDigitizerComponent ci, unsigned short *brightness)     = {0x2F3C,0x4,0xC,0x7000,0xA82A};
  882.     
  883. pascal VideoDigitizerError VDGetBrightness(VideoDigitizerComponent ci, unsigned short *brightness)     = {0x2F3C,0x4,0xD,0x7000,0xA82A};
  884.     
  885. pascal VideoDigitizerError VDSetContrast(VideoDigitizerComponent ci, unsigned short *contrast)     = {0x2F3C,0x4,0xE,0x7000,0xA82A};
  886.     
  887. pascal VideoDigitizerError VDSetHue(VideoDigitizerComponent ci, unsigned short *hue)     = {0x2F3C,0x4,0xF,0x7000,0xA82A};
  888.     
  889. pascal VideoDigitizerError VDSetSharpness(VideoDigitizerComponent ci, unsigned short *sharpness)     = {0x2F3C,0x4,0x10,0x7000,0xA82A};
  890.     
  891. pascal VideoDigitizerError VDSetSaturation(VideoDigitizerComponent ci, unsigned short *saturation)     = {0x2F3C,0x4,0x11,0x7000,0xA82A};
  892.     
  893. pascal VideoDigitizerError VDGetContrast(VideoDigitizerComponent ci, unsigned short *contrast)     = {0x2F3C,0x4,0x12,0x7000,0xA82A};
  894.     
  895. pascal VideoDigitizerError VDGetHue(VideoDigitizerComponent ci, unsigned short *hue)     = {0x2F3C,0x4,0x13,0x7000,0xA82A};
  896.     
  897. pascal VideoDigitizerError VDGetSharpness(VideoDigitizerComponent ci, unsigned short *sharpness)     = {0x2F3C,0x4,0x14,0x7000,0xA82A};
  898.     
  899. pascal VideoDigitizerError VDGetSaturation(VideoDigitizerComponent ci, unsigned short *saturation)     = {0x2F3C,0x4,0x15,0x7000,0xA82A};
  900.     
  901. pascal VideoDigitizerError VDGrabOneFrame(VideoDigitizerComponent ci)     = {0x2F3C,0,0x16,0x7000,0xA82A};
  902.     
  903. pascal VideoDigitizerError VDGetMaxAuxBuffer(VideoDigitizerComponent ci, PixMapHandle *pm, Rect *r)     = {0x2F3C,0x8,0x17,0x7000,0xA82A};
  904.     
  905. pascal VideoDigitizerError VDGetDigitizerInfo(VideoDigitizerComponent ci, DigitizerInfo *info)     = {0x2F3C,0x4,0x19,0x7000,0xA82A};
  906.     
  907. pascal VideoDigitizerError VDGetCurrentFlags(VideoDigitizerComponent ci, long *inputCurrentFlag, long *outputCurrentFlag)     = {0x2F3C,0x8,0x1A,0x7000,0xA82A};
  908.     
  909. pascal VideoDigitizerError VDSetKeyColor(VideoDigitizerComponent ci, long index)     = {0x2F3C,0x4,0x1B,0x7000,0xA82A};
  910.     
  911. pascal VideoDigitizerError VDGetKeyColor(VideoDigitizerComponent ci, long *index)     = {0x2F3C,0x4,0x1C,0x7000,0xA82A};
  912.     
  913. pascal VideoDigitizerError VDAddKeyColor(VideoDigitizerComponent ci, long *index)     = {0x2F3C,0x4,0x1D,0x7000,0xA82A};
  914.     
  915. pascal VideoDigitizerError VDGetNextKeyColor(VideoDigitizerComponent ci, long index)     = {0x2F3C,0x4,0x1E,0x7000,0xA82A};
  916.     
  917. pascal VideoDigitizerError VDSetKeyColorRange(VideoDigitizerComponent ci, RGBColor *minRGB, RGBColor *maxRGB)     = {0x2F3C,0x8,0x1F,0x7000,0xA82A};
  918.     
  919. pascal VideoDigitizerError VDGetKeyColorRange(VideoDigitizerComponent ci, RGBColor *minRGB, RGBColor *maxRGB)     = {0x2F3C,0x8,0x20,0x7000,0xA82A};
  920.     
  921. pascal VideoDigitizerError VDSetDigitizerUserInterrupt(VideoDigitizerComponent ci, long flags, VdigIntProc userInterruptProc, long refcon)     = {0x2F3C,0xC,0x21,0x7000,0xA82A};
  922.     
  923. pascal VideoDigitizerError VDSetInputColorSpaceMode(VideoDigitizerComponent ci, short colorSpaceMode)     = {0x2F3C,0x2,0x22,0x7000,0xA82A};
  924.     
  925. pascal VideoDigitizerError VDGetInputColorSpaceMode(VideoDigitizerComponent ci, short *colorSpaceMode)     = {0x2F3C,0x4,0x23,0x7000,0xA82A};
  926.     
  927. pascal VideoDigitizerError VDSetClipState(VideoDigitizerComponent ci, short clipEnable)     = {0x2F3C,0x2,0x24,0x7000,0xA82A};
  928.     
  929. pascal VideoDigitizerError VDGetClipState(VideoDigitizerComponent ci, short *clipEnable)     = {0x2F3C,0x4,0x25,0x7000,0xA82A};
  930.     
  931. pascal VideoDigitizerError VDSetClipRgn(VideoDigitizerComponent ci, RgnHandle clipRegion)     = {0x2F3C,0x4,0x26,0x7000,0xA82A};
  932.     
  933. pascal VideoDigitizerError VDClearClipRgn(VideoDigitizerComponent ci, RgnHandle clipRegion)     = {0x2F3C,0x4,0x27,0x7000,0xA82A};
  934.     
  935. pascal VideoDigitizerError VDGetCLUTInUse(VideoDigitizerComponent ci, CTabHandle *colorTableHandle)     = {0x2F3C,0x4,0x28,0x7000,0xA82A};        
  936.     
  937. pascal VideoDigitizerError VDSetPLLFilterType(VideoDigitizerComponent ci, short pllType)     = {0x2F3C,0x2,0x29,0x7000,0xA82A};
  938.     
  939. pascal VideoDigitizerError VDGetPLLFilterType(VideoDigitizerComponent ci, short *pllType)     = {0x2F3C,0x4,0x2A,0x7000,0xA82A};
  940.     
  941. pascal VideoDigitizerError VDGetMaskandValue(VideoDigitizerComponent ci, unsigned short blendLevel, long *mask, long *value )     = {0x2F3C,0xA,0x2B,0x7000,0xA82A};
  942.     
  943. pascal VideoDigitizerError VDSetMasterBlendLevel(VideoDigitizerComponent ci, unsigned short *blendLevel)     = {0x2F3C,0x4,0x2C,0x7000,0xA82A};
  944.     
  945. pascal VideoDigitizerError VDSetPlayThruDestination(VideoDigitizerComponent ci, PixMapHandle dest, Rect *destRect,
  946.                                 MatrixRecord *m, RgnHandle mask)     = {0x2F3C,0x10,0x2D,0x7000,0xA82A};
  947.     
  948. pascal VideoDigitizerError VDSetPlayThruOnOff(VideoDigitizerComponent ci, short state)     = {0x2F3C,0x2,0x2E,0x7000,0xA82A};
  949.  
  950. pascal VideoDigitizerError VDSetFieldPreference(VideoDigitizerComponent ci, short fieldFlag)     = {0x2F3C,0x2,0x2F,0x7000,0xA82A};
  951.  
  952. pascal VideoDigitizerError VDGetFieldPreference(VideoDigitizerComponent ci, short *fieldFlag)     = {0x2F3C,0x4,0x30,0x7000,0xA82A};
  953.     
  954. pascal VideoDigitizerError VDPreflightDestination(VideoDigitizerComponent ci, Rect *digitizerRect, PixMap **dest, 
  955.                                 Rect *destRect, MatrixRecord *m)     = {0x2F3C,0x10,0x32,0x7000,0xA82A};
  956.     
  957. pascal VideoDigitizerError VDPreflightGlobalRect(VideoDigitizerComponent ci, GrafPtr theWindow, Rect *globalRect)     = {0x2F3C,0x8,0x33,0x7000,0xA82A};
  958.     
  959. pascal VideoDigitizerError VDSetPlayThruGlobalRect(VideoDigitizerComponent ci, GrafPtr theWindow, Rect *globalRect)     = {0x2F3C,0x8,0x34,0x7000,0xA82A};
  960.     
  961. pascal VideoDigitizerError VDSetInputGammaRecord(VideoDigitizerComponent ci, VDGamRecPtr inputGammaPtr)     = {0x2F3C,0x4,0x35,0x7000,0xA82A};
  962.     
  963. pascal VideoDigitizerError VDGetInputGammaRecord(VideoDigitizerComponent ci, VDGamRecPtr *inputGammaPtr)     = {0x2F3C,0x4,0x36,0x7000,0xA82A};
  964.     
  965. pascal VideoDigitizerError VDSetBlackLevelValue(VideoDigitizerComponent ci, unsigned short *blackLevel)     = {0x2F3C,0x4,0x37,0x7000,0xA82A};
  966.     
  967. pascal VideoDigitizerError VDGetBlackLevelValue(VideoDigitizerComponent ci, unsigned short *blackLevel)     = {0x2F3C,0x4,0x38,0x7000,0xA82A};
  968.     
  969. pascal VideoDigitizerError VDSetWhiteLevelValue(VideoDigitizerComponent ci, unsigned short *whiteLevel)     = {0x2F3C,0x4,0x39,0x7000,0xA82A};
  970.     
  971. pascal VideoDigitizerError VDGetWhiteLevelValue(VideoDigitizerComponent ci, unsigned short *whiteLevel)     = {0x2F3C,0x4,0x3A,0x7000,0xA82A};
  972.     
  973. pascal VideoDigitizerError VDGetVideoDefaults(VideoDigitizerComponent ci, 
  974.         unsigned short *blackLevel, unsigned short *whiteLevel,
  975.         unsigned short *brightness, unsigned short *hue, unsigned short *saturation,
  976.         unsigned short *contrast, unsigned short *sharpness)     = {0x2F3C,0x1C,0x3B,0x7000,0xA82A};
  977.     
  978. pascal VideoDigitizerError VDGetNumberOfInputs(VideoDigitizerComponent ci, short *inputs)     = {0x2F3C,0x4,0x3C,0x7000,0xA82A};
  979.     
  980. pascal VideoDigitizerError VDGetInputFormat(VideoDigitizerComponent ci, short input, short *format)     = {0x2F3C,0x6,0x3D,0x7000,0xA82A};
  981.     
  982. pascal VideoDigitizerError VDSetInput(VideoDigitizerComponent ci, short input)     = {0x2F3C,0x2,0x3E,0x7000,0xA82A};
  983.     
  984. pascal VideoDigitizerError VDGetInput(VideoDigitizerComponent ci, short *input)     = {0x2F3C,0x4,0x3F,0x7000,0xA82A};
  985.     
  986. pascal VideoDigitizerError VDSetInputStandard(VideoDigitizerComponent ci, short inputStandard)     = {0x2F3C,0x2,0x40,0x7000,0xA82A};
  987.     
  988. pascal VideoDigitizerError VDSetupBuffers(VideoDigitizerComponent ci, VdigBufferRecListHandle bufferList)     = {0x2F3C,0x4,0x41,0x7000,0xA82A};
  989.     
  990. pascal VideoDigitizerError VDGrabOneFrameAsync(VideoDigitizerComponent ci, short buffer)     = {0x2F3C,0x2,0x42,0x7000,0xA82A};
  991.     
  992. pascal VideoDigitizerError VDDone(VideoDigitizerComponent ci, short buffer)     = {0x2F3C,0x2,0x43,0x7000,0xA82A};
  993.  
  994. pascal VideoDigitizerError VDSetCompression(VideoDigitizerComponent ci, OSType compressType, short depth, Rect *bounds,
  995.             CodecQ spatialQuality, CodecQ temporalQuality, long keyFrameRate)     = {0x2F3C,0x16,0x44,0x7000,0xA82A};
  996.  
  997. pascal VideoDigitizerError VDCompressOneFrameAsync(VideoDigitizerComponent ci )     = {0x2F3C,0,0x45,0x7000,0xA82A};
  998.  
  999. pascal VideoDigitizerError VDCompressDone(VideoDigitizerComponent ci, Boolean *done, Ptr *theData, long *dataSize, unsigned char *similarity, TimeRecord *t)     = {0x2F3C,0x14,0x46,0x7000,0xA82A};
  1000.  
  1001. pascal VideoDigitizerError VDReleaseCompressBuffer(VideoDigitizerComponent ci, Ptr bufferAddr)     = {0x2F3C,0x4,0x47,0x7000,0xA82A};
  1002.  
  1003. pascal VideoDigitizerError VDGetImageDescription(VideoDigitizerComponent ci, ImageDescriptionHandle desc)     = {0x2F3C,0x4,0x48,0x7000,0xA82A};
  1004.  
  1005. pascal VideoDigitizerError VDResetCompressSequence(VideoDigitizerComponent ci )     = {0x2F3C,0,0x49,0x7000,0xA82A};
  1006.  
  1007. pascal VideoDigitizerError VDSetCompressionOnOff(VideoDigitizerComponent ci, Boolean state)     = {0x2F3C,0x2,0x4A,0x7000,0xA82A};
  1008.  
  1009. pascal VideoDigitizerError VDGetCompressionTypes(VideoDigitizerComponent ci, VDCompressionListHandle h)     = {0x2F3C,0x4,0x4B,0x7000,0xA82A};
  1010.  
  1011. pascal VideoDigitizerError VDSetTimeBase(VideoDigitizerComponent ci, TimeBase t)     = {0x2F3C,0x4,0x4C,0x7000,0xA82A};
  1012.  
  1013. pascal VideoDigitizerError VDSetFrameRate(VideoDigitizerComponent ci, Fixed framesPerSecond)     = {0x2F3C,0x4,0x4D,0x7000,0xA82A};
  1014.  
  1015. pascal VideoDigitizerError VDGetDataRate(VideoDigitizerComponent ci, long *milliSecPerFrame, Fixed *framesPerSecond, long *bytesPerSecond)     = {0x2F3C,0xC,0x4E,0x7000,0xA82A};
  1016.  
  1017. pascal VideoDigitizerError VDGetSoundInputDriver(VideoDigitizerComponent ci, Str255 soundDriverName)     = {0x2F3C,0x4,0x4F,0x7000,0xA82A};
  1018.  
  1019. pascal VideoDigitizerError VDGetDMADepths(VideoDigitizerComponent ci, long *depthArray, long *preferredDepth)     = {0x2F3C,0x8,0x50,0x7000,0xA82A};
  1020.  
  1021. pascal VideoDigitizerError VDGetPreferredTimeScale(VideoDigitizerComponent ci, TimeScale *preferred)     = {0x2F3C,0x4,0x51,0x7000,0xA82A};
  1022.  
  1023. pascal VideoDigitizerError VDReleaseAsyncBuffers(VideoDigitizerComponent ci)     = {0x2F3C,0,0x52,0x7000,0xA82A};
  1024.  
  1025. #ifdef __cplusplus
  1026. }
  1027. #endif /*__cplusplus*/
  1028.  
  1029. enum {
  1030.     kSelectVDGetMaxSrcRect = 0x1,
  1031.     kSelectVDGetActiveSrcRect = 0x2,
  1032.     kSelectVDSetDigitizerRect = 0x3,
  1033.     kSelectVDGetDigitizerRect = 0x4,
  1034.     kSelectVDGetVBlankRect = 0x5,
  1035.     kSelectVDGetMaskPixMap = 0x6,
  1036.     kSelectVDGetPlayThruDestination = 0x8,
  1037.     kSelectVDUseThisCLUT = 0x9,        
  1038.     kSelectVDSetInputGammaValue = 0xA,
  1039.     kSelectVDGetInputGammaValue = 0xB,
  1040.     kSelectVDSetBrightness = 0xC,
  1041.     kSelectVDGetBrightness = 0xD,
  1042.     kSelectVDSetContrast = 0xE,
  1043.     kSelectVDSetHue = 0xF,
  1044.     kSelectVDSetSharpness = 0x10,
  1045.     kSelectVDSetSaturation = 0x11,
  1046.     kSelectVDGetContrast = 0x12,
  1047.     kSelectVDGetHue = 0x13,
  1048.     kSelectVDGetSharpness = 0x14,
  1049.     kSelectVDGetSaturation = 0x15,
  1050.     kSelectVDGrabOneFrame = 0x16,
  1051.     kSelectVDGetMaxAuxBuffer = 0x17,
  1052.     kSelectVDGetDigitizerInfo = 0x19,
  1053.     kSelectVDGetCurrentFlags = 0x1A,
  1054.     kSelectVDSetKeyColor = 0x1B,
  1055.     kSelectVDGetKeyColor = 0x1C,
  1056.     kSelectVDAddKeyColor = 0x1D,
  1057.     kSelectVDGetNextKeyColor = 0x1E,
  1058.     kSelectVDSetKeyColorRange = 0x1F,
  1059.     kSelectVDGetKeyColorRange = 0x20,
  1060.     kSelectVDSetDigitizerUserInterrupt = 0x21,
  1061.     kSelectVDSetInputColorSpaceMode = 0x22,
  1062.     kSelectVDGetInputColorSpaceMode = 0x23,
  1063.     kSelectVDSetClipState = 0x24,
  1064.     kSelectVDGetClipState = 0x25,
  1065.     kSelectVDSetClipRgn = 0x26,
  1066.     kSelectVDClearClipRgn = 0x27,
  1067.     kSelectVDGetCLUTInUse = 0x28,        
  1068.     kSelectVDSetPLLFilterType = 0x29,
  1069.     kSelectVDGetPLLFilterType = 0x2A,
  1070.     kSelectVDGetMaskandValue = 0x2B,
  1071.     kSelectVDSetMasterBlendLevel = 0x2C,
  1072.     kSelectVDSetPlayThruDestination = 0x2D,
  1073.     kSelectVDSetPlayThruOnOff = 0x2E,
  1074.     kSelectVDSetFieldPreference = 0x2F,
  1075.     kSelectVDGetFieldPreference = 0x30,
  1076.     kSelectVDPreflightDestination = 0x32,
  1077.     kSelectVDPreflightGlobalRect = 0x33,
  1078.     kSelectVDSetPlayThruGlobalRect = 0x34,
  1079.     kSelectVDSetInputGammaRecord = 0x35,
  1080.     kSelectVDGetInputGammaRecord = 0x36,
  1081.     kSelectVDSetBlackLevelValue = 0x37,
  1082.     kSelectVDGetBlackLevelValue = 0x38,
  1083.     kSelectVDSetWhiteLevelValue = 0x39,
  1084.     kSelectVDGetWhiteLevelValue = 0x3A,
  1085.     kSelectVDGetVideoDefaults = 0x3B,
  1086.     kSelectVDGetNumberOfInputs = 0x3C,
  1087.     kSelectVDGetInputFormat = 0x3D,
  1088.     kSelectVDSetInput = 0x3E,
  1089.     kSelectVDGetInput = 0x3F,
  1090.     kSelectVDSetInputStandard = 0x40,
  1091.     kSelectVDSetupBuffers = 0x41,
  1092.     kSelectVDGrabOneFrameAsync = 0x42,
  1093.     kSelectVDDone = 0x43,
  1094.     kSelectVDSetCompression = 0x44,
  1095.     kSelectVDCompressOneFrameAsync = 0x45,
  1096.     kSelectVDCompressDone = 0x46,
  1097.     kSelectVDReleaseCompressBuffer = 0x47,
  1098.     kSelectVDGetImageDescription = 0x48,
  1099.     kSelectVDResetCompressSequence = 0x49,
  1100.     kSelectVDSetCompressionOnOff = 0x4A,
  1101.     kSelectVDGetCompressionTypes = 0x4B,
  1102.     kSelectVDSetTimeBase = 0x4C,
  1103.     kSelectVDSetFrameRate = 0x4D,
  1104.     kSelectVDGetDataRate = 0x4E,
  1105.     kSelectVDGetSoundInputDriver = 0x4F,
  1106.     kSelectVDGetDMADepths = 0x50,
  1107.     kSelectVDGetPreferredTimeScale = 0x51,
  1108.     kSelectVDReleaseAsyncBuffers = 0x52 
  1109. };
  1110. #define    StandardCompressionType        'scdi'
  1111. #define    StandardCompressionSubType    'imag'
  1112.  
  1113.  
  1114. typedef pascal Boolean (*SCModalFilterProcPtr)(DialogPtr theDialog,
  1115.     EventRecord *theEvent, short *itemHit, long refcon);
  1116.  
  1117. typedef pascal short (*SCModalHookProcPtr)(DialogPtr theDialog,
  1118.     short itemHit, void *params, long refcon);
  1119.  
  1120.  
  1121. //    Preference flags.
  1122.  
  1123. #define    scListEveryCodec        (1L<<1)
  1124. #define    scAllowZeroFrameRate    (1L<<2)
  1125. #define    scAllowZeroKeyFrameRate    (1L<<3)
  1126. #define    scShowBestDepth            (1L<<4)
  1127. #define    scUseMovableModal        (1L<<5)
  1128.  
  1129.  
  1130. //    Possible test flags for setting test image.
  1131.  
  1132. #define    scPreferCropping            (1<<0)
  1133. #define    scPreferScaling                (1<<1)
  1134. #define scPreferScalingAndCropping    (scPreferScaling + scPreferCropping)
  1135.  
  1136.  
  1137. //    Dimensions of the image preview box.
  1138.  
  1139. #define    scTestImageWidth    80
  1140. #define    scTestImageHeight    80
  1141.  
  1142.  
  1143. //    Possible items returned by hookProc.
  1144.  
  1145. #define    scOKItem                1
  1146. #define    scCancelItem            2
  1147. #define    scCustomItem            3
  1148.  
  1149. //    Result returned when user cancelled.
  1150.  
  1151. #define    scUserCancelled            1
  1152.  
  1153.  
  1154. // Component selectors
  1155.  
  1156. #define    scPositionRect                2
  1157. #define    scPositionDialog            3
  1158. #define    scSetTestImagePictHandle    4
  1159. #define    scSetTestImagePictFile        5
  1160. #define    scSetTestImagePixMap        6
  1161. #define    scGetBestDeviceRect            7
  1162.  
  1163. #define    scRequestImageSettings        10
  1164. #define    scCompressImage                11
  1165. #define    scCompressPicture            12
  1166. #define    scCompressPictureFile        13
  1167. #define    scRequestSequenceSettings    14
  1168. #define    scCompressSequenceBegin        15
  1169. #define    scCompressSequenceFrame        16
  1170. #define    scCompressSequenceEnd        17
  1171. #define    scDefaultPictHandleSettings    18
  1172. #define    scDefaultPictFileSettings    19
  1173. #define    scDefaultPixMapSettings        20
  1174. #define    scGetInfo                    21
  1175. #define    scSetInfo                    22
  1176. #define    scNewGWorld                    23
  1177.  
  1178.  
  1179. //    Get/SetInfo structures.
  1180.  
  1181. typedef struct {
  1182.     CodecType        codecType;
  1183.     CodecComponent    codec;
  1184.     short            depth;
  1185.     CodecQ            spatialQuality;
  1186. } SCSpatialSettings;
  1187.  
  1188. typedef struct {
  1189.     CodecQ            temporalQuality;
  1190.     Fixed            frameRate;
  1191.     long            keyFrameRate;
  1192. } SCTemporalSettings;
  1193.  
  1194. typedef struct {
  1195.     long            dataRate;
  1196.     long            frameDuration;
  1197.     CodecQ            minSpatialQuality;
  1198.     CodecQ            minTemporalQuality;
  1199. } SCDataRateSettings;
  1200.  
  1201. typedef struct {
  1202.     SCModalFilterProcPtr    filterProc;
  1203.     SCModalHookProcPtr        hookProc;
  1204.     long                    refcon;
  1205.     Str31                    customName;
  1206. } SCExtendedProcs;
  1207.  
  1208.  
  1209. //    Get/SetInfo selectors
  1210.  
  1211. #define    scSpatialSettingsType    'sptl'        // pointer to SCSpatialSettings struct
  1212. #define    scTemporalSettingsType    'tprl'        // pointer to SCTemporalSettings struct
  1213. #define    scDataRateSettingsType    'drat'        // pointer to SCDataRateSettings struct
  1214. #define    scColorTableType        'clut'        // pointer to CTabHandle
  1215. #define    scProgressProcType        'prog'        // pointer to ProgressRecord struct
  1216. #define    scExtendedProcsType        'xprc'        // pointer to SCExtendedProcs struct
  1217. #define    scPreferenceFlagsType    'pref'        // pointer to long
  1218. #define    scSettingsStateType        'ssta'        // pointer to Handle
  1219. #define    scSequenceIDType        'sequ'        // pointer to ImageSequence
  1220. #define    scWindowPositionType    'wndw'        // pointer to Point
  1221. #define    scCodecFlagsType        'cflg'        // pointer to CodecFlags
  1222. #define    scCodecSettingsType        'cdec'        // pointer to Handle
  1223.  
  1224.  
  1225. //    Result returned by Get/SetInfo when type cannot be found.
  1226.  
  1227. #define    scTypeNotFoundErr        -8971        // same number as codecExtensionNotFoundErr
  1228.  
  1229.  
  1230.  
  1231. #ifdef __cplusplus
  1232. extern "C" {
  1233. #endif
  1234.  
  1235. pascal ComponentResult
  1236. SCPositionRect(ComponentInstance ci,Rect *rp,Point *where)
  1237.     = {0x2F3C,0x8,0x2,0x7000,0xA82A};
  1238.  
  1239. pascal ComponentResult
  1240. SCPositionDialog(ComponentInstance ci,short id,Point *where)
  1241.     = {0x2F3C,0x6,0x3,0x7000,0xA82A};
  1242.  
  1243. pascal ComponentResult
  1244. SCSetTestImagePictHandle(ComponentInstance ci, PicHandle testPict, Rect *testRect, short testFlags)
  1245.     = {0x2F3C,0xA,0x4,0x7000,0xA82A};
  1246.  
  1247. pascal ComponentResult
  1248. SCSetTestImagePictFile(ComponentInstance ci, short testFileRef, Rect *testRect, short testFlags)
  1249.     = {0x2F3C,0x8,0x5,0x7000,0xA82A};
  1250.  
  1251. pascal ComponentResult
  1252. SCSetTestImagePixMap(ComponentInstance ci, PixMapHandle testPixMap, Rect *testRect, short testFlags)
  1253.     = {0x2F3C,0xA,0x6,0x7000,0xA82A};
  1254.  
  1255. pascal ComponentResult
  1256. SCGetBestDeviceRect(ComponentInstance ci, Rect *r) 
  1257.      = {0x2F3C,0x4,0x7,0x7000,0xA82A};
  1258.  
  1259.  
  1260.  
  1261. pascal ComponentResult
  1262. SCRequestImageSettings(ComponentInstance ci)
  1263.     = {0x2F3C,0,0xA,0x7000,0xA82A};
  1264.  
  1265. pascal ComponentResult
  1266. SCCompressImage(ComponentInstance ci,PixMapHandle src,Rect *srcRect,ImageDescriptionHandle *desc,Handle *data)
  1267.     = {0x2F3C,0x10,0xB,0x7000,0xA82A};
  1268.  
  1269. pascal ComponentResult
  1270. SCCompressPicture(ComponentInstance ci,PicHandle srcPicture,PicHandle dstPicture)
  1271.     = {0x2F3C,0x8,0xC,0x7000,0xA82A};
  1272.  
  1273. pascal ComponentResult
  1274. SCCompressPictureFile(ComponentInstance ci,short srcRefNum,short dstRefNum)
  1275.     = {0x2F3C,0x4,0xD,0x7000,0xA82A};
  1276.  
  1277. pascal ComponentResult
  1278. SCRequestSequenceSettings(ComponentInstance ci)
  1279.     = {0x2F3C,0,0xE,0x7000,0xA82A};
  1280.  
  1281. pascal ComponentResult
  1282. SCCompressSequenceBegin(ComponentInstance ci,PixMapHandle src,Rect *srcRect,ImageDescriptionHandle *desc)
  1283.     = {0x2F3C,0xC,0xF,0x7000,0xA82A};
  1284.  
  1285. pascal ComponentResult
  1286. SCCompressSequenceFrame(ComponentInstance ci,PixMapHandle src,Rect *srcRect,Handle *data,long *dataSize,short *notSyncFlag)
  1287.     = {0x2F3C,0x14,0x10,0x7000,0xA82A};
  1288.  
  1289. pascal ComponentResult
  1290. SCCompressSequenceEnd(ComponentInstance ci)
  1291.     = {0x2F3C,0,0x11,0x7000,0xA82A};
  1292.  
  1293. pascal ComponentResult
  1294. SCDefaultPictHandleSettings(ComponentInstance ci,PicHandle srcPicture, short motion)
  1295.     = {0x2F3C,0x6,0x12,0x7000,0xA82A};
  1296.  
  1297. pascal ComponentResult
  1298. SCDefaultPictFileSettings(ComponentInstance ci,short srcRef, short motion)
  1299.     = {0x2F3C,0x4,0x13,0x7000,0xA82A};
  1300.  
  1301. pascal ComponentResult
  1302. SCDefaultPixMapSettings(ComponentInstance ci,PixMapHandle src, short motion)
  1303.     = {0x2F3C,0x6,0x14,0x7000,0xA82A};
  1304.  
  1305. pascal ComponentResult
  1306. SCGetInfo(ComponentInstance ci,OSType type,void *info)
  1307.     = {0x2F3C,0x8,0x15,0x7000,0xA82A};
  1308.  
  1309. pascal ComponentResult
  1310. SCSetInfo(ComponentInstance ci,OSType type,void *info)
  1311.     = {0x2F3C,0x8,0x16,0x7000,0xA82A};
  1312.  
  1313. pascal ComponentResult
  1314. SCNewGWorld(ComponentInstance ci,GWorldPtr *gwp,Rect *rp,GWorldFlags flags)
  1315.     = {0x2F3C,0xC,0x17,0x7000,0xA82A};
  1316.  
  1317. #ifdef __cplusplus
  1318. }
  1319. #endif
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325. // For compatibility with earlier linked StdCompression.
  1326.  
  1327. typedef struct {
  1328.     long            flags;
  1329.     CodecType        theCodecType;
  1330.     CodecComponent    theCodec;
  1331.     CodecQ            spatialQuality;
  1332.     CodecQ            temporalQuality;
  1333.     short            depth;
  1334.     Fixed            frameRate;
  1335.     long            keyFrameRate;
  1336.     long            reserved1;
  1337.     long            reserved2;
  1338. } SCParams;
  1339.  
  1340.  
  1341. #define    scGetCompression        1
  1342.  
  1343. #define    scShowMotionSettings    (1L<<0)
  1344.  
  1345. #define    scSettingsChangedItem    -1
  1346.  
  1347.  
  1348. #ifdef __cplusplus
  1349. extern "C" {
  1350. #endif
  1351.  
  1352. pascal ComponentInstance OpenStdCompression(void);
  1353.  
  1354. pascal ComponentResult
  1355. SCGetCompressionExtended(ComponentInstance ci,SCParams *params,Point where,
  1356.     SCModalFilterProcPtr filterProc,SCModalHookProcPtr hookProc,long refcon,StringPtr customName)
  1357.     = {0x2F3C,0x18,0x1,0x7000,0xA82A};
  1358.  
  1359. pascal ComponentResult
  1360. SCGetCompression(ComponentInstance ci,SCParams *params,Point where)
  1361.     = {0x42A7,0x42A7,0x42A7,0x42A7,0x2F3C,0x18,0x1,0x7000,0xA82A};
  1362.  
  1363. #ifdef __cplusplus
  1364. }
  1365. #endif
  1366.  
  1367.  
  1368.  
  1369.  
  1370. typedef ComponentInstance MovieImportComponent, MovieExportComponent;
  1371.  
  1372. #define MovieImportType 'eat '
  1373. #define MovieExportType 'spit'
  1374.  
  1375. enum {
  1376.     canMovieImportHandles = 1,
  1377.     canMovieImportFiles = 2,
  1378.     hasMovieImportUserInterface = 4,
  1379.     canMovieExportHandles = 8,
  1380.     canMovieExportFiles = 16,
  1381.     hasMovieExportUserInterface = 32,
  1382.     dontAutoFileMovieImport = 64,
  1383.     canMovieExportAuxDataHandle = 128,
  1384.     canMovieImportValidateHandles = 256,
  1385.     canMovieImportValidateFile = 512,
  1386.     dontRegisterWithEasyOpen = 1024
  1387. };
  1388.  
  1389. enum {
  1390.     kMovieImportExportOpenSelect = kComponentOpenSelect,
  1391.     kMovieImportExportCloseSelect = kComponentCloseSelect,
  1392.     kMovieImportExportCanDoSelect = kComponentCanDoSelect,
  1393.     kMovieImportExportVersionSelect = kComponentVersionSelect, 
  1394.  
  1395.     kMovieImportHandleSelect = 1,
  1396.     kMovieImportFileSelect = 2,
  1397.     kMovieImportSetSampleDurationSelect = 3,
  1398.     kMovieImportSetSampleDescriptionSelect = 4,
  1399.     kMovieImportSetMediaFileSelect = 5,
  1400.     kMovieImportSetDimensionsSelect = 6,
  1401.     kMovieImportSetChunkSizeSelect = 7,
  1402.     kMovieImportSetProgressProcSelect = 8,
  1403.     kMovieImportSetAuxiliaryDataSelect = 9,
  1404.     kMovieImportSetFromScrapSelect = 10,
  1405.     kMovieImportDoUserDialogSelect = 11,
  1406.     kMovieImportSetDurationSelect = 12,
  1407.     kMovieImportGetAuxiliaryDataTypeSelect = 13,
  1408.     kMovieImportValidateSelect = 14,
  1409.     
  1410.     kMovieExportToHandleSelect = 128,
  1411.     kMovieExportToFileSelect = 129,
  1412.     kMovieExportDoUserDialogSelect = 130,
  1413.     kMovieExportGetAuxiliaryDataSelect = 131,
  1414.     kMovieExportSetProgressProcSelect = 132,
  1415.     kMovieExportSetSampleDescriptionSelect = 133
  1416. };
  1417.  
  1418. enum {
  1419.     movieImportCreateTrack = 1,
  1420.     movieImportInParallel = 2,
  1421.     movieImportMustUseTrack = 4
  1422. };
  1423.  
  1424. enum {
  1425.     movieImportResultUsedMultipleTracks = 8
  1426. };
  1427.  
  1428. #ifdef __cplusplus
  1429. extern "C" {
  1430. #endif /*__cplusplus*/
  1431.  
  1432. pascal ComponentResult MovieImportHandle(MovieImportComponent ci, Handle dataH,
  1433.         Movie theMovie, Track targetTrack, Track *usedTrack, TimeValue atTime, TimeValue *addedDuration,
  1434.         long inFlags, long *outFlags) = {0x2F3C,0x20,0x1,0x7000,0xA82A};
  1435.  
  1436. pascal ComponentResult MovieImportFile(MovieImportComponent ci, const FSSpec *theFile,
  1437.         Movie theMovie, Track targetTrack, Track *usedTrack, TimeValue atTime, TimeValue *addedDuration,
  1438.         long inFlags, long *outFlags) = {0x2F3C,0x20,0x2,0x7000,0xA82A};
  1439.  
  1440. pascal ComponentResult MovieImportSetSampleDuration(MovieImportComponent ci, TimeValue duration, TimeScale scale) = {0x2F3C,0x8,0x3,0x7000,0xA82A};
  1441.  
  1442. pascal ComponentResult MovieImportSetSampleDescription(MovieImportComponent ci, SampleDescriptionHandle desc, OSType mediaType) = {0x2F3C,0x8,0x4,0x7000,0xA82A};
  1443.  
  1444. pascal ComponentResult MovieImportSetMediaFile(MovieImportComponent ci, AliasHandle alias) = {0x2F3C,0x4,0x5,0x7000,0xA82A};
  1445.  
  1446. pascal ComponentResult MovieImportSetDimensions(MovieImportComponent ci, Fixed width, Fixed height) = {0x2F3C,0x8,0x6,0x7000,0xA82A};
  1447.  
  1448. pascal ComponentResult MovieImportSetChunkSize(MovieImportComponent ci, long chunkSize) = {0x2F3C,0x4,0x7,0x7000,0xA82A};
  1449.  
  1450. pascal ComponentResult MovieImportSetProgressProc(MovieImportComponent ci, MovieProgressProcPtr proc, long refcon) = {0x2F3C,0x8,0x8,0x7000,0xA82A};
  1451.  
  1452. pascal ComponentResult MovieImportSetAuxiliaryData(MovieImportComponent ci, Handle data, OSType handleType) = {0x2F3C,0x8,0x9,0x7000,0xA82A};
  1453.  
  1454. pascal ComponentResult MovieImportSetFromScrap(MovieImportComponent ci, Boolean fromScrap) = {0x2F3C,0x2,0xA,0x7000,0xA82A};
  1455.  
  1456. pascal ComponentResult MovieImportDoUserDialog(MovieImportComponent ci, const FSSpec *theFile, Handle theData, Boolean *canceled) = {0x2F3C,0xC,0xB,0x7000,0xA82A};
  1457.  
  1458. pascal ComponentResult MovieImportSetDuration(MovieImportComponent ci, TimeValue duration) = {0x2F3C,0x4,0xC,0x7000,0xA82A};
  1459.  
  1460. pascal ComponentResult MovieImportGetAuxiliaryDataType(MovieImportComponent ci, OSType *auxType) = {0x2F3C,0x4,0xD,0x7000,0xA82A};
  1461.  
  1462. pascal ComponentResult MovieImportValidate(MovieImportComponent ci, const FSSpec *theFile, Handle theData, Boolean *valid) = {0x2F3C,0xC,0xE,0x7000,0xA82A};
  1463.  
  1464.  
  1465. pascal ComponentResult MovieExportToHandle(MovieExportComponent ci, Handle dataH, Movie theMovie, Track onlyThisTrack, TimeValue startTime,
  1466.     TimeValue duration) = {0x2F3C,0x14,0x80,0x7000,0xA82A};
  1467.  
  1468. pascal ComponentResult MovieExportToFile(MovieExportComponent ci, const FSSpec *theFile, Movie theMovie, Track onlyThisTrack, TimeValue startTime,
  1469.     TimeValue duration) = {0x2F3C,0x14,0x81,0x7000,0xA82A};
  1470.  
  1471. pascal ComponentResult MovieExportDoUserDialog(MovieExportComponent ci, const FSSpec *theFile, Handle theData, Boolean *canceled) = {0x2F3C,0xC,0x82,0x7000,0xA82A};
  1472.  
  1473. pascal ComponentResult MovieExportGetAuxiliaryData(MovieExportComponent ci, Handle dataH, OSType *handleType) = {0x2F3C,0x8,0x83,0x7000,0xA82A};
  1474.  
  1475. pascal ComponentResult MovieExportSetProgressProc(MovieExportComponent ci, MovieProgressProcPtr proc, long refcon) = {0x2F3C,0x8,0x84,0x7000,0xA82A};
  1476.  
  1477. pascal ComponentResult MovieExportSetSampleDescription(MovieExportComponent ci, SampleDescriptionHandle desc, OSType mediaType) = {0x2F3C,0x8,0x85,0x7000,0xA82A};
  1478.  
  1479.  
  1480. // Text Export Display Info data structure
  1481. typedef struct {
  1482.     long        displayFlags;
  1483.     long         textJustification;
  1484.     RGBColor     bgColor;
  1485.     Rect        textBox;
  1486.     
  1487.     short        beginHilite;
  1488.     short        endHilite;
  1489.     RGBColor     hiliteColor;
  1490.     Boolean        doHiliteColor;
  1491.     TimeValue     scrollDelayDur;
  1492.     Point        dropShadowOffset;
  1493.     short        dropShadowTransparency;
  1494. } TextDisplayData;
  1495.  
  1496. typedef ComponentInstance TextExportComponent;
  1497. pascal ComponentResult TextExportGetDisplayData(TextExportComponent ci, TextDisplayData *textDisplay) = {0x2F3C,0x4,0x100,0x7000,0xA82A};
  1498.  
  1499. #ifdef __cplusplus
  1500. }
  1501. #endif /*__cplusplus*/
  1502.  
  1503. /***************
  1504.  
  1505.     File Preview Components
  1506.  
  1507. ***************/
  1508.  
  1509. typedef ComponentInstance pnotComponent;
  1510.  
  1511. enum {
  1512.     pnotComponentWantsEvents = 1,
  1513.     pnotComponentNeedsNoCache = 2
  1514. };
  1515.  
  1516. enum {
  1517.     kPreviewOpenSelector = 0,
  1518.     kPreviewCloseSelector = -1,
  1519.     kPreviewCanDoSelector = -2,
  1520.     kPreviewVersionSelector = -3, 
  1521.  
  1522.     kPreviewShowDataSelector = 1,
  1523.     kPreviewMakePreviewSelector = 2,
  1524.     kPreviewMakePreviewReferenceSelector = 3,
  1525.     kPreviewEventSelector = 4
  1526. };
  1527.  
  1528. #define ShowFilePreviewComponentType 'pnot'
  1529. #define CreateFilePreviewComponentType 'pmak'
  1530.  
  1531. #ifdef __cplusplus
  1532. extern "C" {
  1533. #endif /*__cplusplus*/
  1534.  
  1535. pascal ComponentResult PreviewShowData(pnotComponent p, OSType dataType, Handle data,
  1536.         const Rect *inHere) = {0x2F3C,0xC,0x1,0x7000,0xA82A};
  1537.  
  1538. pascal ComponentResult PreviewMakePreview(pnotComponent p, OSType *previewType, Handle *previewResult,
  1539.             const FSSpec *sourceFile, ProgressProcRecordPtr progress) = {0x2F3C,0x10,0x2,0x7000,0xA82A};
  1540.  
  1541. pascal ComponentResult PreviewMakePreviewReference(pnotComponent p, OSType *previewType, short *resID,
  1542.             const FSSpec *sourceFile) = {0x2F3C,0xC,0x3,0x7000,0xA82A};
  1543.  
  1544. pascal ComponentResult PreviewEvent(pnotComponent p, EventRecord *e, Boolean *handledEvent) = {0x2F3C,0x8,0x4,0x7000,0xA82A};
  1545. #ifdef __cplusplus
  1546. }
  1547. #endif /*__cplusplus*/
  1548. #endif /*__QUICKTIMECOMPONENTS__*/
  1549.